perm filename MINSER.VLI[VLI,LSP] blob
sn#382031 filedate 1978-09-08 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Mini-series
C00005 ENDMK
Cā;
; Mini-series ;
(DM SETA (call)
(RPLACB call ['SET ['NTH (CADDR call) (CADR call)]
(CADDDR call)]))
(DM ELM (call) (RPLACB call
['CAR ['NTH (CADDR call) (CADR call)]]))
(DM SEND (call) (RPLACB call
['SETQ '#target (CADR call) '#msg (CADDR call)])))))
(DE M-SERIES (let)
(SETQ ls 0 lk 0 status () start 0 3-uples NIL)
(SEND '$initialiser let)
(WHILE (NEQ #target '$fini) ; loop loop loop ;
(#target #msg))
(PRINT #msg let)
(PRINT '3-uples 3-uples)
'OK)
(DE $initialiser (let)
(IF (NULL let) (SEND '$newstart (ADD1 start))
(SETQ lk (ADD1 lk) status (CONS NIL status))
(IF (NEQ (NEXTL let) '?) (SETQ ls (ADD1 ls)))
($initialiser let)))))))))
(DE $newstart (msg)
(SETQ start msg)
(COND
((GT start lk) (SEND '$fini 'succes))
((ELM status start) ($newstart (ADD1 start)))
(T (SEND '$newmove 1))))))))
(DE $newmove (msg)
(SETQ move msg)
(IF (GT (PLUS start move move) ls) (SEND '$fini 'echec)
(SETQ inc (DIFFER (SETQ predicted (ELM let (PLUS start move)))
(ELM let start))
predicted (PLUS predicted inc))
(SEND '$verifier (PLUS start move move)))))))))))
(DE $verifier (x) (COND
((GT x LS)
(SETQ 3-uples (CONS [start move inc] 3-uples))
(SEND '$completer start))
((NEQ predicted (ELM let x)) (SEND '$newmove (ADD1 move)))
(T (SETQ predicted (PLUS predicted inc))
($verifier (PLUS x move)))))))))))
(DE $completer (x)
(IF (GT x lk) (SEND '$newstart (ADD1 start))
(SETA status x T)
(AND (GT x ls)
(SETA let x predicted)
(SETQ predicted (PLUS predicted inc)))
($completer (PLUS x move))))))))))
(PRINT "Lancer avec (M-SERIES '(x x x x ? ? ?)).")